import threading
import queue
import random
import time

def produce(q):
    """
    创建生产者进程
    :param q: 线程实例
    :return:
    """
    i=0
    while i<10:
        num=random.randint(1,100)
        q.put(num)
        print("生产者线程生产了{}".format(num))
        time.sleep(1)
        i+=1
    q.put(None)
    # 完成任务
    q.task_done()

def consume(q):
        while True:
            item=q.get()
            if item is None:
                break
            print("-------->消费者线程消费了{}".format(item))
            time.sleep(3)
        q.task_done()
if __name__=="__main__":
    q=queue.Queue(10)             # 先进先出队列
    # q=queue.LifoQueue(10)           # 后进先出队列；注：q.put(None)此时如果加进去会导致直接停止
    # q=queue.PriorityQueue()
    arr=[]
    th1=threading.Thread(target=produce,args=(q,))
    th1.start()
    th2=threading.Thread(target=consume,args=(q,))
    th2.start()
    th1.join()
    th2.join()
    print("end")